package com.palominocia.capa_datos_nodo.modelo.opciones;
import java.util.Date;
import java.util.List;

import javax.persistence.Enumerated;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.roo.addon.javabean.RooJavaBean;
import org.springframework.roo.addon.jpa.activerecord.RooJpaActiveRecord;
import org.springframework.roo.addon.tostring.RooToString;

@RooJavaBean
@RooToString
@RooJpaActiveRecord
public class Opciones {

    /**
     */
    private Integer codOpcion;

    /**
     */
    private Integer codPadre;

    /**
     */
    private String nombreOpcion;

    /**
     */
    private Integer nivelOpcion;

    /**
     */
    private Integer ordenOpcion;

    /**
     */
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "M-")
    private Date fechaCreacion;

    /**
     */
    @Enumerated
    private Habilitacion estadoHabilitacion;

    /**
     */
    private String txtDatosAdicionales;
    

    @Transient
    public static Opciones findOpcionesbyNombreOpcion(String metodoRemoto) {
        Opciones opci = null;
        try {
            opci = entityManager().createQuery("SELECT o FROM Opciones o WHERE o.nombreOpcion =:nombreOpcion AND o.estadoHabilitacion=:habilitacion", Opciones.class).setParameter("nombreOpcion", metodoRemoto).setParameter("habilitacion", Habilitacion.HABILITADO).getSingleResult();
        } catch (Exception e) {
            opci = null;
        }
        return opci;
    }

    @Transient
	public static List<Opciones> findOpcionesbyCodOpcion(Integer codPadre) {
    	List<Opciones> opci = null;
        try {
            opci = entityManager().createQuery("SELECT o FROM Opciones o WHERE o.codPadre =:codPadre AND o.estadoHabilitacion=:habilitacion", Opciones.class).setParameter("codPadre", codPadre).setParameter("habilitacion", Habilitacion.HABILITADO).getResultList();
        } catch (Exception e) {
            opci = null;
        }
        return opci;
	}
}
